﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThridGroup.ERP.DTO.ProductionSystem;

namespace ThridGroup.ERP.ProductionSystem
{
    /// <summary>
    /// 排班计划接口
    /// </summary>
    public interface ICrewSchedulingServices
    {
        /// <summary>
        /// 添加排班计划
        /// </summary>
        /// <param name="crewScheduling"></param>
        /// <returns></returns>
        Task<int> AddCrewScheduling(CrewSchedulingDTO crewScheduling);

        /// <summary>
        /// 排班计划列表显示
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="planName"></param>
        /// <returns></returns>
        Task<List<CrewSchedulingDTO>> ShowCrewScheduling(int pageIndex=1,int pageSize=10,string? planName="");

        /// <summary>
        /// 删除排班计划
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task DelCrewScheduling(List<int> ids);
        
        /// <summary>
        ///获取排班计划 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<CrewSchedulingDTO> GetCrewScheduling(int id);

        /// <summary>
        /// 编辑排班计划
        /// </summary>
        /// <param name="crewScheduling"></param>
        /// <returns></returns>
        Task<int> UpdateCrewScheduling(CrewSchedulingDTO crewScheduling);


        //=====================================班次===========================================

        /// <summary>
        /// 添加班次
        /// </summary>
        /// <param name="sailings"></param>
        /// <returns></returns>
        Task<int> AddSailings(SailingsModelDTO sailings);

        /// <summary>
        /// 根据排班计划id显示班次列表
        /// </summary>
        /// <returns></returns>
        Task<List<SailingsModelDTO>> ShowSailings(int? id=0);

        /// <summary>
        /// 删除班次
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task DeleteSailings(List<int> ids);

        /// <summary>
        /// 获取班次
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<SailingsModelDTO> GetSailings(int id);

        /// <summary>
        /// 编辑班次
        /// </summary>
        /// <param name="sailings"></param>
        /// <returns></returns>
        Task<int> UpdateSailings(SailingsModelDTO sailings);
    }
}
